<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	
</body>
<script>
	function LinkedList(){
		//声明一个Node辅助类，Node类表示要加入列表的项，包括一个element，即添加的值，next：下一个节点项的指针
		var Node=function(element){
			this.element=element;
			this.next=null;
		};
		//用来存储列表项的数量
		var length=0;
		//用来存储第一个节点的引用
		var head=null;
		//向列表尾部添加一个新的项
		this.append=function(element){
			var node=new Node(element),
			current;

			if(head==null){ //列表中第一个节点
				head=node;
			}else{
				current=head;
				//循环列表，知道找到最后一项
				while(current.next){
					current=current.next;
				}
				//找到最后一项，将其next赋为node，建立链接
				current.next=node
			}
			//更新列表的长度
			length++;

		};
		//向列表的特定位置插入一个新的项
		this.insert=function(position,element){
			//检查越界zhi
			if(position>=0 && position<=length){
				var node=new Node(element),
				current=head,
				previous,
				index=0;
				if(position==0){//在第一个位置添加
					node.next=current;
					head=node;
				}else{
					while(index++<position){
						previous=current;
						current=current.next;
					}
					node.next=current;
					previous.next=node;
				}
				//更新列表长度
				length++;
				return true;

			}else{
				return false;
			}
		};
		//从列表的特定位置移除一项
		this.removeAt=function(position){
			//检查越界值
			if(position>-1 && position<length){
				var current=head,
				previous,
				index =0;
				//移除第一项
				if(position==0){
					head=current.next;
				}else{
					while(index++ <position){
						previous=current;
						current=current.next;
					}
					//将previous与current的下一项链接起来，跳过current，从而移除它
					previous.next=current.next;
				}
				length--;
				return current.element;
			}else{
				return null;
			}
		};
		//从列表中移除一项
		this.remove=function(element){};
		//返回元素在列表中的索引
		this.indexOf=function(element){
			var current=head,
			index=0;
			while(current){
				if(element==current.element){
					return index;
				}
				index++;
				current=current.next;
			}
			return -1;
		};
		//如果链表不包含任何元素，返回true，如果length>0则返回false
		this.isEmpty=function(){
			return length===0;
		};
		//返回元素个数
		this.size=function(){
			return length;
		};
		this.getHead=function(){};
		//把linkList对象转化成字符串
		this.toString=function(){
			var current=head,
			string='';
			while(current){
				string+=','+current.element;
				current=current.next;
			}
			return string.slice(1);
		};
		this.sprint=function(){};
	}

var list=new LinkedList();
list.append(15);
list.append(10);
list.append(23);
console.log(list.toString());
console.log(list.indexOf(15));
</script>

</html>